package com.example.communist_app_api.service;

import com.example.communist_app_api.db.dto.ActivityDTO;
import com.example.communist_app_api.db.dto.ActivityUniAppShowDTO;
import com.example.communist_app_api.db.dto.UserActivityDTO;
import com.example.communist_app_api.db.pojoDto.Activity;
import com.example.communist_app_api.vo.uniapp.req.UniAppShowActivityByConditionReq;
import com.example.communist_app_api.vo.uniapp.resp.UniAppMyActivityDetailResp;
import com.example.communist_app_api.vo.web.req.ActivityCreateReq;
import com.example.communist_app_api.vo.web.req.ActivityUpdateReq;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public interface ActivityService {
    Boolean createActivity(ActivityCreateReq req, Integer userId);

    PageInfo<ActivityDTO> selectByCommon(Activity activity, Integer pageNum, Integer pageSize,Integer userId);

    Boolean updateActivity(ActivityUpdateReq req);

    Integer deleteActivity(Integer id);

    ActivityDTO selectActivityById(Integer id);

    List<ActivityUniAppShowDTO> uniAppShowActivityByCondition(UniAppShowActivityByConditionReq req, int userId);

    ActivityDTO selectUniAppActivityById(Integer activityId);

    String generateSignCode(Integer activityId);

    void sign(Integer activityId, String code, Integer userId);

    Map<Boolean, List<UserActivityDTO>> getSignUserList(Integer activityId);

    void additionalSign(Integer userId, String organizersId, Integer activityId);

    UniAppMyActivityDetailResp getMyActivityDetailByActivityIdAndUserId(Integer activityId, int userId);
}
